package ysf.com.sort;

import com.alibaba.fastjson.JSON;

/**
 * @author ysf
 * @version 1.0
 * @date 2021/12/11 14:40
 * <p>
 * 直接插入排序
 *  遍历数组中每一个元素，拿比较元素和下标靠前的被比较的元素进行比较大小视情况而定移动比较元素的下标位置
 *
 *
 */
public class InsertSort {


    public static void main(String[] args) {

        int[] arrys = {9, 5, 6, 7, 3, 10};
        System.out.println(JSON.toJSONString(arrys));
        testInsertSort(arrys);
        System.out.println(JSON.toJSONString(arrys));

    }

    /**
     * 直接插入排序
     *
     * @param arrys
     */
    public static void testInsertSort(int[] arrys) {

        // 遍历所有数字

        for (int i = 1; i < arrys.length - 1; i++) {

            // 当前数字比前一个数字小
            if (arrys[i] < arrys[i - 1]) {
                int j;
                // 把当前遍历的数字保存起来
                int temp = arrys[i];
                for (j = i - 1; j >= 0 && arrys[j] > temp; j--) {
                    // 前一个数字赋给后一个数字
                    arrys[j + 1] = arrys[j];
                }
                // 把临时变量赋给不满足条件的后一个元素
                arrys[j + 1] = temp;
            }
        }
    }
}
